#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 字符串忽略大小写的搜索替换
问题: 你需要以忽略大小写的方式搜索与替换文本字符串
提示 :
"""
import re

def recipe1():
    """使用 re 模块的时候给这些操作提供 re.IGNORECASE 标志参数"""
    text = 'UPPER PYTHON, lower python, Mixed Python'
    print(f"{text = }")
    print(f"{re.findall('python', text, flags=re.IGNORECASE) = }")
    print(f"{re.sub('python', 'snake', text, flags=re.IGNORECASE) = }") # 例子揭示了一个小缺陷，替换字符串并不会自动跟被匹配字符串的大小写保持一致

    print(f"{re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE) = }")

def main():
    print('recipe1'.center(20, '*'))
    recipe1()

def matchcase(word):
    def replace(m):
        text = m.group()
        if text.isupper():
            return word.upper()
        elif text.islower():
            return word.lower()
        elif text[0].isupper():
            return word.capitalize()
        else:
            return word
    return replace    

if __name__ == '__main__':
    main()    